#include<bits/stdc++.h>
using namespace std;
const int N=15;

int n;
char arr[N][N];
bool solid[N][N];
int nr[2][N];
int nc[2][N];

unordered_map<string,int> ur,uc;

bool check(int r,int c){
    if(nr[0][r]>n/2) return false;
    if(nr[1][r]>n/2) return false;
    if(nc[0][r]>n/2) return false;
    if(nc[1][r]>n/2) return false;
    if(r==n){
        if(nr[0][r]!=n/2||nc[1][r]!=n/2) return false;
    }
    if(c==n){
        if(nc[0][c]!=n/2&&nc[1][c]!=n/2) return false;
    }
    if(r>2){
        for(int i=0;i<=1;i++){
            char c1=arr[r-1][c];
            char c2=arr[r+1][c];
            if(c1==arr[r][c]&&c2==c1) return false;
        }
    }
    if(c>2){
        for(int i=0;i<=1;i++){
            char c1=arr[r][c-1];
            char c2=arr[r][c+1];
            if(c1==arr[r][c]&&c2==c1) return false;
        }
    }
    return true;
}

void dfs(int r,int c){
    if(c>n) return;
    if(r>n){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cout<<arr[i][j];
            }
            cout<<endl;
        }
        exit(0);
    }
    if(solid[r][c]){
        if(check(r,c)){
            
        }
        else return;
    }
    for(int i=0;i<=1;i++){
        arr[r][c]=i;
        nr[i][r]++;
        nc[i][c]++;
        if(check(r,c)){
            if(r==n){
                string num;
                for(int j=1;j<=n;j++){
                    num+=arr[j][c];
                }
                if(!ur.count(num)||ur[num]==0){
                    ur[num]=1;
                    dfs(r,c+1);
                }
            }
            if(c==n){

            }
        }
        arr[r][c]='_';
        nr[i][r]--;
        nc[i][c]--;
    }
}

int main()
{
    cin>>n;
    memset(nr,0,sizeof(nr));
    memset(nc,0,sizeof(nc));

    /*
    【2，n+1】
    */
    for(int i=1;i<=n;i++){
        string str;
        cin>>str;
        for(int j=1;j<=n;j++){
            arr[i][j]=str[j-1];
            if(arr[i][j]=='0'||arr[i][j]==1){
                solid[i][j]=true;
                nr[arr[i][j]-'0'][i]++;
                nc[arr[i][j]-'0'][j]++;
            }
        }
    }

    return 0;
}